home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 2 / AACD 2.iso / AACD / Magazine / GraphicsCards / StormMesa / src / attrib.s < prev    next >
Text File  |  1999-02-04  |  39KB  |  2,024 lines

  1.  
  2. ; Storm C Compiler
  3. ; Work2:Mesa3/Mesa-3.0/src/attrib.c
  4.     mc68030
  5.     mc68881
  6.     XREF    _gl_DrawBuffer
  7.     XREF    _gl_error
  8.     XREF    _gl_problem
  9.     XREF    _q_memcpy
  10.     XREF    _malloc
  11.     XREF    _free
  12.     XREF    _CC
  13.  
  14.     SECTION "_new_attrib_node:0",CODE
  15.  
  16.  
  17. ;static struct gl_attrib_node *new_attrib_node( GLbitfield kind )
  18. _new_attrib_node
  19.     move.l    d2,-(a7)
  20.     move.l    $8(a7),d2
  21. L97
  22. ;   an = (struct gl_attrib_node *) malloc( sizeof(struct gl_attrib
  23.     pea    $C.w
  24.     jsr    _malloc
  25.     addq.w    #4,a7
  26.     move.l    d0,a0
  27. ;   if (an) 
  28.     cmp.w    #0,a0
  29.     beq.b    L99
  30. L98
  31. ;      an->kind = kind;
  32.     move.l    d2,(a0)
  33. L99
  34.     move.l    a0,d0
  35.     move.l    (a7)+,d2
  36.     rts
  37.  
  38.     SECTION "_gl_PushAttrib:0",CODE
  39.  
  40.     rts
  41.  
  42. ;void gl_PushAttrib( GLcontext* ctx, GLbitfield mask )
  43.     XDEF    _gl_PushAttrib
  44. _gl_PushAttrib
  45. L164    EQU    -$40
  46.     link    a5,#L164
  47.     movem.l    d2-d4/a2-a4,-(a7)
  48.     move.l    $C(a5),d2
  49.     move.l    $8(a5),a2
  50. L101
  51. ;   if (INSIDE_BEGIN_END(ctx)) 
  52.     move.l    a2,a0
  53.     add.l    #$E968,a0
  54.     move.l    (a0),d0
  55.     cmp.l    #$1A00,d0
  56.     beq.b    L103
  57. L102
  58. ;      gl_error( ctx, GL_INVALID_OPERATION, "glPushAttrib" );
  59.     move.l    #L100,-(a7)
  60.     pea    $502.w
  61.     move.l    a2,-(a7)
  62.     jsr    _gl_error
  63.     add.w    #$C,a7
  64.     movem.l    (a7)+,d2-d4/a2-a4
  65.     unlk    a5
  66.     rts
  67. L103
  68. ;   if (ctx->AttribStackDepth>=MAX_ATTRIB_STACK_DEPTH) 
  69.     move.l    $2170(a2),d0
  70.     cmp.l    #$10,d0
  71.     blo.b    L105
  72. L104
  73. ;      gl_error( ctx, GL_STACK_OVERFLOW, "glPushAttrib" );
  74.     move.l    #L100,-(a7)
  75.     pea    $503.w
  76.     move.l    a2,-(a7)
  77.     jsr    _gl_error
  78.     add.w    #$C,a7
  79.     movem.l    (a7)+,d2-d4/a2-a4
  80.     unlk    a5
  81.     rts
  82. L105
  83. ;   head = NULL;
  84.     clr.l    -$8(a5)
  85. ;   if (mask & GL_ACCUM_BUFFER_BIT) 
  86.     move.l    d2,d0
  87.     and.l    #$200,d0
  88.     beq.b    L107
  89. L106
  90. ;      attr = MALLOC_STRUCT( gl_accum_attrib );
  91.     pea    $10.w
  92.     jsr    _malloc
  93.     addq.w    #4,a7
  94.     move.l    d0,a3
  95. ; attr, &ctx->Accu
  96.     pea    $10.w
  97.     pea    $21B4(a2)
  98.     move.l    a3,-(a7)
  99.     jsr    _q_memcpy
  100.     add.w    #$C,a7
  101. ;      newnode = new_attrib_node( GL_ACCUM_BUFFER_BIT );
  102.     pea    $200.w
  103.     jsr    _new_attrib_node
  104.     addq.w    #4,a7
  105.     move.l    d0,a0
  106. ;      newnode->data = attr;
  107.     move.l    a3,4(a0)
  108. ;      newnode->next = head;
  109.     move.l    -$8(a5),$8(a0)
  110. ;      head = newnode;
  111.     move.l    a0,-$8(a5)
  112. L107
  113. ;   if (mask & GL_COLOR_BUFFER_BIT) 
  114.     move.l    d2,d0
  115.     and.l    #$4000,d0
  116.     beq.b    L109
  117. L108
  118. ;      attr = MALLOC_STRUCT( gl_colorbuffer_attrib );
  119.     pea    $52.w
  120.     jsr    _malloc
  121.     addq.w    #4,a7
  122.     move.l    d0,a3
  123. ; &ctx->Color, siz
  124.     pea    $52.w
  125.     pea    $21C4(a2)
  126.     move.l    a3,-(a7)
  127.     jsr    _q_memcpy
  128.     add.w    #$C,a7
  129. ;      newnode = new_attrib_node( GL_COLOR_BUFFER_BIT );
  130.     pea    $4000.w
  131.     jsr    _new_attrib_node
  132.     addq.w    #4,a7
  133.     move.l    d0,a0
  134. ;      newnode->data = attr;
  135.     move.l    a3,4(a0)
  136. ;      newnode->next = head;
  137.     move.l    -$8(a5),$8(a0)
  138. ;      head = newnode;
  139.     move.l    a0,-$8(a5)
  140. L109
  141. ;   if (mask & GL_CURRENT_BIT) 
  142.     move.l    d2,d0
  143.     and.l    #1,d0
  144.     beq.b    L111
  145. L110
  146. ;      attr = MALLOC_STRUCT( gl_current_attrib );
  147.     pea    $86.w
  148.     jsr    _malloc
  149.     addq.w    #4,a7
  150.     move.l    d0,a3
  151. ;r, &ctx->Current,
  152.     pea    $86.w
  153.     pea    $2216(a2)
  154.     move.l    a3,-(a7)
  155.     jsr    _q_memcpy
  156.     add.w    #$C,a7
  157. ;      newnode = new_attrib_node( GL_CURRENT_BIT );
  158.     pea    1.w
  159.     jsr    _new_attrib_node
  160.     addq.w    #4,a7
  161.     move.l    d0,a0
  162. ;      newnode->data = attr;
  163.     move.l    a3,4(a0)
  164. ;      newnode->next = head;
  165.     move.l    -$8(a5),$8(a0)
  166. ;      head = newnode;
  167.     move.l    a0,-$8(a5)
  168. L111
  169. ;   if (mask & GL_DEPTH_BUFFER_BIT) 
  170.     move.l    d2,d0
  171.     and.l    #$100,d0
  172.     beq.b    L113
  173. L112
  174. ;      attr = MALLOC_STRUCT( gl_depthbuffer_attrib );
  175.     pea    $A.w
  176.     jsr    _malloc
  177.     addq.w    #4,a7
  178.     move.l    d0,a3
  179. ; &ctx->Depth, siz
  180.     pea    $A.w
  181.     pea    $229C(a2)
  182.     move.l    a3,-(a7)
  183.     jsr    _q_memcpy
  184.     add.w    #$C,a7
  185. ;      newnode = new_attrib_node( GL_DEPTH_BUFFER_BIT );
  186.     pea    $100.w
  187.     jsr    _new_attrib_node
  188.     addq.w    #4,a7
  189.     move.l    d0,a0
  190. ;      newnode->data = attr;
  191.     move.l    a3,4(a0)
  192. ;      newnode->next = head;
  193.     move.l    -$8(a5),$8(a0)
  194. ;      head = newnode;
  195.     move.l    a0,-$8(a5)
  196. L113
  197. ;   if (mask & GL_ENABLE_BIT) 
  198.     move.l    d2,d0
  199.     and.l    #$2000,d0
  200.     beq    L124
  201. L114
  202. ;      attr = MALLOC_STRUCT( gl_enable_attrib );
  203.     pea    $44.w
  204.     jsr    _malloc
  205.     addq.w    #4,a7
  206.     move.l    d0,a3
  207. ;      attr->AlphaTest = ctx->Color.AlphaEnabled;
  208.     move.l    a3,a0
  209.     move.b    $21E6(a2),(a0)
  210. ;      attr->AutoNormal = ctx->Eval.AutoNormal;
  211.     move.l    a3,a0
  212.     move.b    $22B8(a2),1(a0)
  213. ;      attr->Blend = ctx->Color.BlendEnabled;
  214.     move.l    a3,a0
  215.     move.b    $21ED(a2),2(a0)
  216. ;      for (i=0;
  217.     moveq    #0,d0
  218.     bra.b    L116
  219. L115
  220. ;         attr->ClipPlane[i] = ctx->Transform.ClipEnabled[i];
  221.     move.l    a2,a0
  222.     add.l    #$E536,a0
  223.     move.b    0(a0,d0.l),d1
  224.     lea    3(a3),a0
  225.     move.b    d1,0(a0,d0.l)
  226.     addq.l    #1,d0
  227. L116
  228.     cmp.l    #6,d0
  229.     blo.b    L115
  230. L117
  231. ;      attr->ColorMaterial = ctx->Light.ColorMaterialEnabled;
  232.     lea    $2318(a2),a0
  233.     add.l    #$8E18,a0
  234.     move.b    (a0),d0
  235.     move.l    a3,a0
  236.     move.b    d0,$9(a0)
  237. ;      attr->CullFace = ctx->Polygon.CullFlag;
  238.     move.l    a2,a0
  239.     add.l    #$DDEE,a0
  240.     move.b    $D(a0),d0
  241.     move.l    a3,a0
  242.     move.b    d0,$A(a0)
  243. ;      attr->DepthTest = ctx->Depth.Test;
  244.     move.l    a3,a0
  245.     move.b    $22A4(a2),$B(a0)
  246. ;      attr->Dither = ctx->Color.DitherFlag;
  247.     move.l    a3,a0
  248.     move.b    $2215(a2),$C(a0)
  249. ;      attr->Fog = ctx->Fog.Enabled;
  250.     move.l    a3,a0
  251.     move.b    $22DE(a2),$D(a0)
  252. ;      for (i=0;
  253.     moveq    #0,d0
  254.     bra.b    L119
  255. L118
  256. ;         attr->Light[i] = ctx->Light.Light[i].Enabled;
  257.     lea    $2318(a2),a0
  258.     move.l    d0,d1
  259.     muls.l    #$10E2,d1
  260.     move.b    $68(a0,d1.l),d1
  261.     lea    $E(a3),a0
  262.     move.b    d1,0(a0,d0.l)
  263.     addq.l    #1,d0
  264. L119
  265.     cmp.l    #$8,d0
  266.     blo.b    L118
  267. L120
  268. ;      attr->Lighting = ctx->Light.Enabled;
  269.     lea    $2318(a2),a0
  270.     add.l    #$8E06,a0
  271.     move.b    (a0),d0
  272.     move.l    a3,a0
  273.     move.b    d0,$16(a0)
  274. ;      attr->LineSmooth = ctx->Line.SmoothFlag;
  275.     move.l    a2,a0
  276.     add.l    #$B158,a0
  277.     move.b    (a0),d0
  278.     move.l    a3,a0
  279.     move.b    d0,$17(a0)
  280. ;      attr->LineStipple = ctx->Line.StippleFlag;
  281.     move.l    a2,a0
  282.     add.l    #$B158,a0
  283.     move.b    1(a0),d0
  284.     move.l    a3,a0
  285.     move.b    d0,$18(a0)
  286. ;      attr->IndexLogicOp = ctx->Color.IndexLogicOpEnabled;
  287.     move.l    a3,a0
  288.     move.b    $2212(a2),$19(a0)
  289. ;      attr->ColorLogicOp = ctx->Color.ColorLogicOpEnabled;
  290.     move.l    a3,a0
  291.     move.b    $2213(a2),$1A(a0)
  292. ;      attr->Map1Color4 = ctx->Eval.Map1Color4;
  293.     move.l    a3,a0
  294.     move.b    $22A6(a2),$1B(a0)
  295. ;      attr->Map1Index = ctx->Eval.Map1Index;
  296.     move.l    a3,a0
  297.     move.b    $22A7(a2),$1C(a0)
  298. ;      attr->Map1Normal = ctx->Eval.Map1Normal;
  299.     move.l    a3,a0
  300.     move.b    $22A8(a2),$1D(a0)
  301. ;      attr->Map1TextureCoord1 = ctx->Eval.Map1TextureCoord1;
  302.     move.l    a3,a0
  303.     move.b    $22A9(a2),$1E(a0)
  304. ;      attr->Map1TextureCoord2 = ctx->Eval.Map1TextureCoord2;
  305.     move.l    a3,a0
  306.     move.b    $22AA(a2),$1F(a0)
  307. ;      attr->Map1TextureCoord3 = ctx->Eval.Map1TextureCoord3;
  308.     move.l    a3,a0
  309.     move.b    $22AB(a2),$20(a0)
  310. ;      attr->Map1TextureCoord4 = ctx->Eval.Map1TextureCoord4;
  311.     move.l    a3,a0
  312.     move.b    $22AC(a2),$21(a0)
  313. ;      attr->Map1Vertex3 = ctx->Eval.Map1Vertex3;
  314.     move.l    a3,a0
  315.     move.b    $22AD(a2),$22(a0)
  316. ;      attr->Map1Vertex4 = ctx->Eval.Map1Vertex4;
  317.     move.l    a3,a0
  318.     move.b    $22AE(a2),$23(a0)
  319. ;      attr->Map2Color4 = ctx->Eval.Map2Color4;
  320.     move.l    a3,a0
  321.     move.b    $22AF(a2),$24(a0)
  322. ;      attr->Map2Index = ctx->Eval.Map2Index;
  323.     move.l    a3,a0
  324.     move.b    $22B0(a2),$25(a0)
  325. ;      attr->Map2Normal = ctx->Eval.Map2Normal;
  326.     move.l    a3,a0
  327.     move.b    $22B1(a2),$26(a0)
  328. ;      attr->Map2TextureCoord1 = ctx->Eval.Map2TextureCoord1;
  329.     move.l    a3,a0
  330.     move.b    $22B2(a2),$27(a0)
  331. ;      attr->Map2TextureCoord2 = ctx->Eval.Map2TextureCoord2;
  332.     move.l    a3,a0
  333.     move.b    $22B3(a2),$28(a0)
  334. ;      attr->Map2TextureCoord3 = ctx->Eval.Map2TextureCoord3;
  335.     move.l    a3,a0
  336.     move.b    $22B4(a2),$29(a0)
  337. ;      attr->Map2TextureCoord4 = ctx->Eval.Map2TextureCoord4;
  338.     move.l    a3,a0
  339.     move.b    $22B5(a2),$2A(a0)
  340. ;      attr->Map2Vertex3 = ctx->Eval.Map2Vertex3;
  341.     move.l    a3,a0
  342.     move.b    $22B6(a2),$2B(a0)
  343. ;      attr->Map2Vertex4 = ctx->Eval.Map2Vertex4;
  344.     move.l    a3,a0
  345.     move.b    $22B7(a2),$2C(a0)
  346. ;      attr->Normalize = ctx->Transform.Normalize;
  347.     move.l    a2,a0
  348.     add.l    #$E4D2,a0
  349.     move.b    $6B(a0),d0
  350.     move.l    a3,a0
  351.     move.b    d0,$2D(a0)
  352. ;      attr->PointSmooth = ctx->Point.SmoothFlag;
  353.     move.l    a2,a0
  354.     add.l    #$DDD0,a0
  355.     move.b    (a0),d0
  356.     move.l    a3,a0
  357.     move.b    d0,$2E(a0)
  358. ;      attr->PolygonOffsetPoint = ctx->Polygon.OffsetPoint;
  359.     move.l    a2,a0
  360.     add.l    #$DDEE,a0
  361.     move.b    $20(a0),d0
  362.     move.l    a3,a0
  363.     move.b    d0,$2F(a0)
  364. ;      attr->PolygonOffsetLine = ctx->Polygon.OffsetLine;
  365.     move.l    a2,a0
  366.     add.l    #$DDEE,a0
  367.     move.b    $21(a0),d0
  368.     move.l    a3,a0
  369.     move.b    d0,$30(a0)
  370. ;      attr->PolygonOffsetFill = ctx->Polygon.OffsetFill;
  371.     move.l    a2,a0
  372.     add.l    #$DDEE,a0
  373.     move.b    $22(a0),d0
  374.     move.l    a3,a0
  375.     move.b    d0,$31(a0)
  376. ;      attr->PolygonSmooth = ctx->Polygon.SmoothFlag;
  377.     move.l    a2,a0
  378.     add.l    #$DDEE,a0
  379.     move.b    $16(a0),d0
  380.     move.l    a3,a0
  381.     move.b    d0,$32(a0)
  382. ;      attr->PolygonStipple = ctx->Polygon.StippleFlag;
  383.     move.l    a2,a0
  384.     add.l    #$DDEE,a0
  385.     move.b    $17(a0),d0
  386.     move.l    a3,a0
  387.     move.b    d0,$33(a0)
  388. ;      attr->RescaleNormals = ctx->Transform.RescaleNormals;
  389.     move.l    a2,a0
  390.     add.l    #$E4D2,a0
  391.     move.b    $6C(a0),d0
  392.     move.l    a3,a0
  393.     move.b    d0,$34(a0)
  394. ;      attr->Scissor = ctx->Scissor.Enabled;
  395.     move.l    a2,a0
  396.     add.l    #$DE92,a0
  397.     move.b    (a0),d0
  398.     move.l    a3,a0
  399.     move.b    d0,$35(a0)
  400. ;      attr->Stencil = ctx->Stencil.Enabled;
  401.     move.l    a2,a0
  402.     add.l    #$DEA4,a0
  403.     move.b    (a0),d0
  404.     move.l    a3,a0
  405.     move.b    d0,$36(a0)
  406. ;      attr->Texture = ctx->Texture.Enabled;
  407.     move.l    a2,a0
  408.     add.l    #$DEBA,a0
  409.     move.l    $8(a0),d0
  410.     move.l    a3,a0
  411.     move.l    d0,$38(a0)
  412. ;      for (i=0;
  413.     moveq    #0,d0
  414.     bra.b    L122
  415. L121
  416. ;         attr->TexGen[i] = ctx->Texture.Set[i].TexGenEnable
  417.     move.l    a2,a0
  418.     add.l    #$DEC6,a0
  419.     move.l    d0,d1
  420.     muls.l    #$BC,d1
  421.     move.l    $14(a0,d1.l),d1
  422.     lea    $3C(a3),a0
  423.     move.l    d1,0(a0,d0.l*4)
  424.     addq.l    #1,d0
  425. L122
  426.     cmp.l    #2,d0
  427.     blo.b    L121
  428. L123
  429. ;      newnode = new_attrib_node( GL_ENABLE_BIT );
  430.     pea    $2000.w
  431.     jsr    _new_attrib_node
  432.     addq.w    #4,a7
  433.     move.l    d0,a0
  434. ;      newnode->data = attr;
  435.     move.l    a3,4(a0)
  436. ;      newnode->next = head;
  437.     move.l    -$8(a5),$8(a0)
  438. ;      head = newnode;
  439.     move.l    a0,-$8(a5)
  440. L124
  441. ;   if (mask & GL_EVAL_BIT) 
  442.     move.l    d2,d0
  443.     and.l    #$10000,d0
  444.     beq.b    L126
  445. L125
  446. ;      attr = MALLOC_STRUCT( gl_eval_attrib );
  447.     pea    $38.w
  448.     jsr    _malloc
  449.     addq.w    #4,a7
  450.     move.l    d0,a3
  451. ;Y( attr, &ctx->Ev
  452.     pea    $38.w
  453.     pea    $22A6(a2)
  454.     move.l    a3,-(a7)
  455.     jsr    _q_memcpy
  456.     add.w    #$C,a7
  457. ;      newnode = new_attrib_node( GL_EVAL_BIT );
  458.     move.l    #$10000,-(a7)
  459.     jsr    _new_attrib_node
  460.     addq.w    #4,a7
  461.     move.l    d0,a0
  462. ;      newnode->data = attr;
  463.     move.l    a3,4(a0)
  464. ;      newnode->next = head;
  465.     move.l    -$8(a5),$8(a0)
  466. ;      head = newnode;
  467.     move.l    a0,-$8(a5)
  468. L126
  469. ;   if (mask & GL_FOG_BIT) 
  470.     move.l    d2,d0
  471.     and.l    #$80,d0
  472.     beq.b    L128
  473. L127
  474. ;      attr = MALLOC_STRUCT( gl_fog_attrib );
  475.     pea    $26.w
  476.     jsr    _malloc
  477.     addq.w    #4,a7
  478.     move.l    d0,a3
  479. ;CPY( attr, &ctx->
  480.     pea    $26.w
  481.     pea    $22DE(a2)
  482.     move.l    a3,-(a7)
  483.     jsr    _q_memcpy
  484.     add.w    #$C,a7
  485. ;      newnode = new_attrib_node( GL_FOG_BIT );
  486.     pea    $80.w
  487.     jsr    _new_attrib_node
  488.     addq.w    #4,a7
  489.     move.l    d0,a0
  490. ;      newnode->data = attr;
  491.     move.l    a3,4(a0)
  492. ;      newnode->next = head;
  493.     move.l    -$8(a5),$8(a0)
  494. ;      head = newnode;
  495.     move.l    a0,-$8(a5)
  496. L128
  497. ;   if (mask & GL_HINT_BIT) 
  498.     move.l    d2,d0
  499.     and.l    #$8000,d0
  500.     beq.b    L130
  501. L129
  502. ;      attr = MALLOC_STRUCT( gl_hint_attrib );
  503.     pea    $14.w
  504.     jsr    _malloc
  505.     addq.w    #4,a7
  506.     move.l    d0,a3
  507. ;Y( attr, &ctx->Hi
  508.     pea    $14.w
  509.     pea    $2304(a2)
  510.     move.l    a3,-(a7)
  511.     jsr    _q_memcpy
  512.     add.w    #$C,a7
  513. ;      newnode = new_attrib_node( GL_HINT_BIT );
  514.     move.l    #$8000,-(a7)
  515.     jsr    _new_attrib_node
  516.     addq.w    #4,a7
  517.     move.l    d0,a0
  518. ;      newnode->data = attr;
  519.     move.l    a3,4(a0)
  520. ;      newnode->next = head;
  521.     move.l    -$8(a5),$8(a0)
  522. ;      head = newnode;
  523.     move.l    a0,-$8(a5)
  524. L130
  525. ;   if (mask & GL_LIGHTING_BIT) 
  526.     move.l    d2,d0
  527.     and.l    #$40,d0
  528.     beq.b    L132
  529. L131
  530. ;      attr = MALLOC_STRUCT( gl_light_attrib );
  531.     move.l    #$8E40,-(a7)
  532.     jsr    _malloc
  533.     addq.w    #4,a7
  534.     move.l    d0,a3
  535. ; attr, &ctx->Ligh
  536.     move.l    #$8E40,-(a7)
  537.     pea    $2318(a2)
  538.     move.l    a3,-(a7)
  539.     jsr    _q_memcpy
  540.     add.w    #$C,a7
  541. ;      newnode = new_attrib_node( GL_LIGHTING_BIT );
  542.     pea    $40.w
  543.     jsr    _new_attrib_node
  544.     addq.w    #4,a7
  545.     move.l    d0,a0
  546. ;      newnode->data = attr;
  547.     move.l    a3,4(a0)
  548. ;      newnode->next = head;
  549.     move.l    -$8(a5),$8(a0)
  550. ;      head = newnode;
  551.     move.l    a0,-$8(a5)
  552. L132
  553. ;   if (mask & GL_LINE_BIT) 
  554.     move.l    d2,d0
  555.     and.l    #4,d0
  556.     beq.b    L134
  557. L133
  558. ;      attr = MALLOC_STRUCT( gl_line_attrib );
  559.     pea    $C.w
  560.     jsr    _malloc
  561.     addq.w    #4,a7
  562.     move.l    d0,a3
  563. ;Y( attr, &ctx->Li
  564.     pea    $C.w
  565.     move.l    a2,a0
  566.     add.l    #$B158,a0
  567.     pea    (a0)
  568.     move.l    a3,-(a7)
  569.     jsr    _q_memcpy
  570.     add.w    #$C,a7
  571. ;      newnode = new_attrib_node( GL_LINE_BIT );
  572.     pea    4.w
  573.     jsr    _new_attrib_node
  574.     addq.w    #4,a7
  575.     move.l    d0,a0
  576. ;      newnode->data = attr;
  577.     move.l    a3,4(a0)
  578. ;      newnode->next = head;
  579.     move.l    -$8(a5),$8(a0)
  580. ;      head = newnode;
  581.     move.l    a0,-$8(a5)
  582. L134
  583. ;   if (mask & GL_LIST_BIT) 
  584.     move.l    d2,d0
  585.     and.l    #$20000,d0
  586.     beq.b    L136
  587. L135
  588. ;      attr = MALLOC_STRUCT( gl_list_attrib );
  589.     pea    4.w
  590.     jsr    _malloc
  591.     addq.w    #4,a7
  592.     move.l    d0,a3
  593. ;Y( attr, &ctx->Li
  594.     pea    4.w
  595.     move.l    a2,a0
  596.     add.l    #$B164,a0
  597.     pea    (a0)
  598.     move.l    a3,-(a7)
  599.     jsr    _q_memcpy
  600.     add.w    #$C,a7
  601. ;      newnode = new_attrib_node( GL_LIST_BIT );
  602.     move.l    #$20000,-(a7)
  603.     jsr    _new_attrib_node
  604.     addq.w    #4,a7
  605.     move.l    d0,a0
  606. ;      newnode->data = attr;
  607.     move.l    a3,4(a0)
  608. ;      newnode->next = head;
  609.     move.l    -$8(a5),$8(a0)
  610. ;      head = newnode;
  611.     move.l    a0,-$8(a5)
  612. L136
  613. ;   if (mask & GL_PIXEL_MODE_BIT) 
  614.     move.l    d2,d0
  615.     and.l    #$20,d0
  616.     beq.b    L138
  617. L137
  618. ;      attr = MALLOC_STRUCT( gl_pixel_attrib );
  619.     pea    $2C68.w
  620.     jsr    _malloc
  621.     addq.w    #4,a7
  622.     move.l    d0,a3
  623. ; attr, &ctx->Pixe
  624.     pea    $2C68.w
  625.     move.l    a2,a0
  626.     add.l    #$B168,a0
  627.     pea    (a0)
  628.     move.l    a3,-(a7)
  629.     jsr    _q_memcpy
  630.     add.w    #$C,a7
  631. ;      newnode = new_attrib_node( GL_PIXEL_MODE_BIT );
  632.     pea    $20.w
  633.     jsr    _new_attrib_node
  634.     addq.w    #4,a7
  635.     move.l    d0,a0
  636. ;      newnode->data = attr;
  637.     move.l    a3,4(a0)
  638. ;      newnode->next = head;
  639.     move.l    -$8(a5),$8(a0)
  640. ;      head = newnode;
  641.     move.l    a0,-$8(a5)
  642. L138
  643. ;   if (mask & GL_POINT_BIT) 
  644.     move.l    d2,d0
  645.     and.l    #2,d0
  646.     beq.b    L140
  647. L139
  648. ;      attr = MALLOC_STRUCT( gl_point_attrib );
  649.     pea    $1E.w
  650.     jsr    _malloc
  651.     addq.w    #4,a7
  652.     move.l    d0,a3
  653. ; attr, &ctx->Poin
  654.     pea    $1E.w
  655.     move.l    a2,a0
  656.     add.l    #$DDD0,a0
  657.     pea    (a0)
  658.     move.l    a3,-(a7)
  659.     jsr    _q_memcpy
  660.     add.w    #$C,a7
  661. ;      newnode = new_attrib_node( GL_POINT_BIT );
  662.     pea    2.w
  663.     jsr    _new_attrib_node
  664.     addq.w    #4,a7
  665.     move.l    d0,a0
  666. ;      newnode->data = attr;
  667.     move.l    a3,4(a0)
  668. ;      newnode->next = head;
  669.     move.l    -$8(a5),$8(a0)
  670. ;      head = newnode;
  671.     move.l    a0,-$8(a5)
  672. L140
  673. ;   if (mask & GL_POLYGON_BIT) 
  674.     move.l    d2,d0
  675.     and.l    #$8,d0
  676.     beq.b    L142
  677. L141
  678. ;      attr = MALLOC_STRUCT( gl_polygon_attrib );
  679.     pea    $24.w
  680.     jsr    _malloc
  681.     addq.w    #4,a7
  682.     move.l    d0,a3
  683. ;r, &ctx->Polygon,
  684.     pea    $24.w
  685.     move.l    a2,a0
  686.     add.l    #$DDEE,a0
  687.     pea    (a0)
  688.     move.l    a3,-(a7)
  689.     jsr    _q_memcpy
  690.     add.w    #$C,a7
  691. ;      newnode = new_attrib_node( GL_POLYGON_BIT );
  692.     pea    $8.w
  693.     jsr    _new_attrib_node
  694.     addq.w    #4,a7
  695.     move.l    d0,a0
  696. ;      newnode->data = attr;
  697.     move.l    a3,4(a0)
  698. ;      newnode->next = head;
  699.     move.l    -$8(a5),$8(a0)
  700. ;      head = newnode;
  701.     move.l    a0,-$8(a5)
  702. L142
  703. ;   if (mask & GL_POLYGON_STIPPLE_BIT) 
  704.     move.l    d2,d0
  705.     and.l    #$10,d0
  706.     beq.b    L144
  707. L143
  708. ;      stipple = (GLuint *) malloc( 32*sizeof(GLuint) );
  709.     pea    $80.w
  710.     jsr    _malloc
  711.     addq.w    #4,a7
  712.     move.l    d0,a3
  713. ;Y( stipple, ctx->
  714.     pea    $80.w
  715.     move.l    a2,a0
  716.     add.l    #$DE12,a0
  717.     pea    (a0)
  718.     move.l    a3,-(a7)
  719.     jsr    _q_memcpy
  720.     add.w    #$C,a7
  721. ;      newnode = new_attrib_node( GL_POLYGON_STIPPLE_BIT );
  722.     pea    $10.w
  723.     jsr    _new_attrib_node
  724.     addq.w    #4,a7
  725.     move.l    d0,a0
  726. ;      newnode->data = stipple;
  727.     move.l    a3,4(a0)
  728. ;      newnode->next = head;
  729.     move.l    -$8(a5),$8(a0)
  730. ;      head = newnode;
  731.     move.l    a0,-$8(a5)
  732. L144
  733. ;   if (mask & GL_SCISSOR_BIT) 
  734.     move.l    d2,d0
  735.     and.l    #$80000,d0
  736.     beq.b    L146
  737. L145
  738. ;      attr = MALLOC_STRUCT( gl_scissor_attrib );
  739.     pea    $12.w
  740.     jsr    _malloc
  741.     addq.w    #4,a7
  742.     move.l    d0,a3
  743. ;r, &ctx->Scissor,
  744.     pea    $12.w
  745.     move.l    a2,a0
  746.     add.l    #$DE92,a0
  747.     pea    (a0)
  748.     move.l    a3,-(a7)
  749.     jsr    _q_memcpy
  750.     add.w    #$C,a7
  751. ;      newnode = new_attrib_node( GL_SCISSOR_BIT );
  752.     move.l    #$80000,-(a7)
  753.     jsr    _new_attrib_node
  754.     addq.w    #4,a7
  755.     move.l    d0,a0
  756. ;      newnode->data = attr;
  757.     move.l    a3,4(a0)
  758. ;      newnode->next = head;
  759.     move.l    -$8(a5),$8(a0)
  760. ;      head = newnode;
  761.     move.l    a0,-$8(a5)
  762. L146
  763. ;   if (mask & GL_STENCIL_BUFFER_BIT) 
  764.     move.l    d2,d0
  765.     and.l    #$400,d0
  766.     beq.b    L148
  767. L147
  768. ;      attr = MALLOC_STRUCT( gl_stencil_attrib );
  769.     pea    $16.w
  770.     jsr    _malloc
  771.     addq.w    #4,a7
  772.     move.l    d0,a3
  773. ;r, &ctx->Stencil,
  774.     pea    $16.w
  775.     move.l    a2,a0
  776.     add.l    #$DEA4,a0
  777.     pea    (a0)
  778.     move.l    a3,-(a7)
  779.     jsr    _q_memcpy
  780.     add.w    #$C,a7
  781. ;      newnode = new_attrib_node( GL_STENCIL_BUFFER_BIT );
  782.     pea    $400.w
  783.     jsr    _new_attrib_node
  784.     addq.w    #4,a7
  785.     move.l    d0,a0
  786. ;      newnode->data = attr;
  787.     move.l    a3,4(a0)
  788. ;      newnode->next = head;
  789.     move.l    -$8(a5),$8(a0)
  790. ;      head = newnode;
  791.     move.l    a0,-$8(a5)
  792. L148
  793. ;   if (mask & GL_TEXTURE_BIT) 
  794.     move.l    d2,d0
  795.     and.l    #$40000,d0
  796.     beq    L159
  797. L149
  798. ;      int texSet = ctx->Texture.CurrentSet;
  799.     move.l    a2,a0
  800.     add.l    #$DEBA,a0
  801.     move.l    (a0),d1
  802. ;      for (dim = 0;
  803.     moveq    #0,d0
  804.     bra    L157
  805. L150
  806. ;         if (dim == 0)
  807.     tst.l    d0
  808.     bne.b    L152
  809. L151
  810. ;            obj = ctx->Texture.Set[texSet].Current1D;
  811.     move.l    a2,a0
  812.     add.l    #$DEC6,a0
  813.     move.l    d1,d3
  814.     muls.l    #$BC,d3
  815.     add.l    d3,a0
  816.     move.l    $A8(a0),a4
  817.     bra.b    L156
  818. L152
  819. ;         else if (dim == 1)
  820.     cmp.l    #1,d0
  821.     bne.b    L154
  822. L153
  823. ;            obj = ctx->Texture.Set[texSet].Current2D;
  824.     move.l    a2,a0
  825.     add.l    #$DEC6,a0
  826.     move.l    d1,d3
  827.     muls.l    #$BC,d3
  828.     add.l    d3,a0
  829.     move.l    $AC(a0),a4
  830.     bra.b    L156
  831. L154
  832. ;         else if (dim == 2)
  833.     cmp.l    #2,d0
  834.     bne.b    L156
  835. L155
  836. ;            obj = ctx->Texture.Set[texSet].Current3D;
  837.     move.l    a2,a0
  838.     add.l    #$DEC6,a0
  839.     move.l    d1,d3
  840.     muls.l    #$BC,d3
  841.     add.l    d3,a0
  842.     move.l    $B0(a0),a4
  843. L156
  844. ;         ctx->Texture.Priority[dim] = obj->Priority;
  845.     move.l    a4,a0
  846.     fmove.s    $C(a0),fp0
  847.     move.l    a2,a0
  848.     add.l    #$E45A,a0
  849.     fmove.s    fp0,0(a0,d0.l*4)
  850. ;         ctx->Texture.BorderColor[dim][0] = obj->BorderColo
  851.     move.l    a2,a0
  852.     add.l    #$E466,a0
  853.     move.l    d0,d4
  854.     asl.l    #4,d4
  855.     move.l    $10(a4),0(a0,d4.l)
  856. ;         ctx->Texture.BorderColor[dim][1] = obj->BorderColo
  857.     lea    $10(a4),a0
  858.     move.l    4(a0),d3
  859.     move.l    a2,a0
  860.     add.l    #$E466,a0
  861.     move.l    d0,d4
  862.     asl.l    #4,d4
  863.     lea    0(a0,d4.l),a0
  864.     move.l    d3,4(a0)
  865. ;         ctx->Texture.BorderColor[dim][2] = obj->BorderColo
  866.     lea    $10(a4),a0
  867.     move.l    $8(a0),d3
  868.     move.l    a2,a0
  869.     add.l    #$E466,a0
  870.     move.l    d0,d4
  871.     asl.l    #4,d4
  872.     lea    0(a0,d4.l),a0
  873.     move.l    d3,$8(a0)
  874. ;         ctx->Texture.BorderColor[dim][3] = obj->BorderColo
  875.     lea    $10(a4),a0
  876.     move.l    $C(a0),d3
  877.     move.l    a2,a0
  878.     add.l    #$E466,a0
  879.     move.l    d0,d4
  880.     asl.l    #4,d4
  881.     lea    0(a0,d4.l),a0
  882.     move.l    d3,$C(a0)
  883. ;         ctx->Texture.WrapS[dim] = obj->WrapS;
  884.     move.l    a4,a0
  885.     move.l    $20(a0),d3
  886.     move.l    a2,a0
  887.     add.l    #$E496,a0
  888.     move.l    d3,0(a0,d0.l*4)
  889. ;         ctx->Texture.WrapT[dim] = obj->WrapT;
  890.     move.l    a4,a0
  891.     move.l    $24(a0),d3
  892.     move.l    a2,a0
  893.     add.l    #$E4A2,a0
  894.     move.l    d3,0(a0,d0.l*4)
  895. ;         ctx->Texture.WrapR[dim] = obj->WrapR;
  896.     move.l    a4,a0
  897.     move.l    $28(a0),d3
  898.     move.l    a2,a0
  899.     add.l    #$E4AE,a0
  900.     move.l    d3,0(a0,d0.l*4)
  901. ;         ctx->Texture.MinFilter[dim] = obj->MinFilter;
  902.     move.l    a4,a0
  903.     move.l    $2C(a0),d3
  904.     move.l    a2,a0
  905.     add.l    #$E4BA,a0
  906.     move.l    d3,0(a0,d0.l*4)
  907. ;         ctx->Texture.MagFilter[dim] = obj->MagFilter;
  908.     move.l    a4,a0
  909.     move.l    $30(a0),d3
  910.     move.l    a2,a0
  911.     add.l    #$E4C6,a0
  912.     move.l    d3,0(a0,d0.l*4)
  913.     addq.l    #1,d0
  914. L157
  915.     cmp.l    #3,d0
  916.     blt    L150
  917. L158
  918. ;      attr = MALLOC_STRUCT( gl_texture_attrib );
  919.     pea    $618.w
  920.     jsr    _malloc
  921.     addq.w    #4,a7
  922.     move.l    d0,a3
  923. ;r, &ctx->Texture,
  924.     pea    $618.w
  925.     move.l    a2,a0
  926.     add.l    #$DEBA,a0
  927.     pea    (a0)
  928.     move.l    a3,-(a7)
  929.     jsr    _q_memcpy
  930.     add.w    #$C,a7
  931. ;      newnode = new_attrib_node( GL_TEXTURE_BIT );
  932.     move.l    #$40000,-(a7)
  933.     jsr    _new_attrib_node
  934.     addq.w    #4,a7
  935.     move.l    d0,a0
  936. ;      newnode->data = attr;
  937.     move.l    a3,4(a0)
  938. ;      newnode->next = head;
  939.     move.l    -$8(a5),$8(a0)
  940. ;      head = newnode;
  941.     move.l    a0,-$8(a5)
  942. L159
  943. ;   if (mask & GL_TRANSFORM_BIT) 
  944.     move.l    d2,d0
  945.     and.l    #$1000,d0
  946.     beq.b    L161
  947. L160
  948. ;      attr = MALLOC_STRUCT( gl_transform_attrib );
  949.     pea    $6E.w
  950.     jsr    _malloc
  951.     addq.w    #4,a7
  952.     move.l    d0,a3
  953. ;ctx->Transform, s
  954.     pea    $6E.w
  955.     move.l    a2,a0
  956.     add.l    #$E4D2,a0
  957.     pea    (a0)
  958.     move.l    a3,-(a7)
  959.     jsr    _q_memcpy
  960.     add.w    #$C,a7
  961. ;      newnode = new_attrib_node( GL_TRANSFORM_BIT );
  962.     pea    $1000.w
  963.     jsr    _new_attrib_node
  964.     addq.w    #4,a7
  965.     move.l    d0,a0
  966. ;      newnode->data = attr;
  967.     move.l    a3,4(a0)
  968. ;      newnode->next = head;
  969.     move.l    -$8(a5),$8(a0)
  970. ;      head = newnode;
  971.     move.l    a0,-$8(a5)
  972. L161
  973. ;   if (mask & GL_VIEWPORT_BIT) 
  974.     and.l    #$800,d2
  975.     beq.b    L163
  976. L162
  977. ;      attr = MALLOC_STRUCT( gl_viewport_attrib );
  978.     pea    $30.w
  979.     jsr    _malloc
  980.     addq.w    #4,a7
  981.     move.l    d0,a3
  982. ; &ctx->Viewport, 
  983.     pea    $30.w
  984.     move.l    a2,a0
  985.     add.l    #$E540,a0
  986.     pea    (a0)
  987.     move.l    a3,-(a7)
  988.     jsr    _q_memcpy
  989.     add.w    #$C,a7
  990. ;      newnode = new_attrib_node( GL_VIEWPORT_BIT );
  991.     pea    $800.w
  992.     jsr    _new_attrib_node
  993.     addq.w    #4,a7
  994.     move.l    d0,a0
  995. ;      newnode->data = attr;
  996.     move.l    a3,4(a0)
  997. ;      newnode->next = head;
  998.     move.l    -$8(a5),$8(a0)
  999. ;      head = newnode;
  1000.     move.l    a0,-$8(a5)
  1001. L163
  1002. ;   ctx->AttribStack[ctx->AttribStackDepth] = head;
  1003.     lea    $2174(a2),a0
  1004.     move.l    $2170(a2),d0
  1005.     move.l    -$8(a5),0(a0,d0.l*4)
  1006. ;   ctx->AttribStackDepth++;
  1007.     addq.l    #1,$2170(a2)
  1008.     movem.l    (a7)+,d2-d4/a2-a4
  1009.     unlk    a5
  1010.     rts
  1011.  
  1012. L100
  1013.     dc.b    'glPushAttrib',0
  1014.  
  1015.     SECTION "_gl_PopAttrib:0",CODE
  1016.  
  1017.  
  1018. ;void gl_PopAttrib( GLcontext* ctx )
  1019.     XDEF    _gl_PopAttrib
  1020. _gl_PopAttrib
  1021. L222    EQU    -$24
  1022.     link    a5,#L222
  1023.     movem.l    d2/d3/a2-a4,-(a7)
  1024.     move.l    $8(a5),a2
  1025. L167
  1026. ;   if (INSIDE_BEGIN_END(ctx)) 
  1027.     move.l    a2,a0
  1028.     add.l    #$E968,a0
  1029.     move.l    (a0),d0
  1030.     cmp.l    #$1A00,d0
  1031.     beq.b    L169
  1032. L168
  1033. ;      gl_error( ctx, GL_INVALID_OPERATION, "glPopAttrib" );
  1034.     move.l    #L165,-(a7)
  1035.     pea    $502.w
  1036.     move.l    a2,-(a7)
  1037.     jsr    _gl_error
  1038.     add.w    #$C,a7
  1039.     movem.l    (a7)+,d2/d3/a2-a4
  1040.     unlk    a5
  1041.     rts
  1042. L169
  1043. ;   if (ctx->AttribStackDepth==0) 
  1044.     tst.l    $2170(a2)
  1045.     bne.b    L171
  1046. L170
  1047. ;      gl_error( ctx, GL_STACK_UNDERFLOW, "glPopAttrib" );
  1048.     move.l    #L165,-(a7)
  1049.     pea    $504.w
  1050.     move.l    a2,-(a7)
  1051.     jsr    _gl_error
  1052.     add.w    #$C,a7
  1053.     movem.l    (a7)+,d2/d3/a2-a4
  1054.     unlk    a5
  1055.     rts
  1056. L171
  1057. ;   ctx->AttribStackDepth--;
  1058.     subq.l    #1,$2170(a2)
  1059. ;   attr = ctx->AttribStack[ctx->AttribStackDepth];
  1060.     lea    $2174(a2),a0
  1061.     move.l    $2170(a2),d0
  1062.     move.l    0(a0,d0.l*4),a4
  1063. ;   while (attr) 
  1064.     bra    L220
  1065. L172
  1066. ;      switch (attr->kind)
  1067.     move.l    a4,a0
  1068.     move.l    (a0),d0
  1069.     cmp.l    #$400,d0
  1070.     beq    L201
  1071.     bhi    L223
  1072.     cmp.l    #$20,d0
  1073.     beq    L196
  1074.     bhi.b    L224
  1075.     cmp.l    #4,d0
  1076.     beq    L194
  1077.     bhi.b    L225
  1078.     cmp.l    #1,d0
  1079.     beq    L177
  1080.     cmp.l    #2,d0
  1081.     beq    L197
  1082.     bra    L218
  1083. L225
  1084.     cmp.l    #$8,d0
  1085.     beq    L198
  1086.     cmp.l    #$10,d0
  1087.     beq    L199
  1088.     bra    L218
  1089. L224
  1090.     cmp.l    #$100,d0
  1091.     beq    L178
  1092.     bhi.b    L226
  1093.     cmp.l    #$40,d0
  1094.     beq    L193
  1095.     cmp.l    #$80,d0
  1096.     beq    L191
  1097.     bra    L218
  1098. L226
  1099.     cmp.l    #$200,d0
  1100.     beq.b    L173
  1101.     bra    L218
  1102. L223
  1103.     cmp.l    #$8000,d0
  1104.     beq    L192
  1105.     bhi.b    L227
  1106.     cmp.l    #$2000,d0
  1107.     beq    L179
  1108.     bhi.b    L228
  1109.     cmp.l    #$800,d0
  1110.     beq    L213
  1111.     cmp.l    #$1000,d0
  1112.     beq    L202
  1113.     bra    L218
  1114. L228
  1115.     cmp.l    #$4000,d0
  1116.     beq.b    L174
  1117.     bra    L218
  1118. L227
  1119.     cmp.l    #$40000,d0
  1120.     beq    L203
  1121.     bhi.b    L229
  1122.     cmp.l    #$10000,d0
  1123.     beq    L190
  1124.     cmp.l    #$20000,d0
  1125.     beq    L195
  1126.     bra    L218
  1127. L229
  1128.     cmp.l    #$80000,d0
  1129.     beq    L200
  1130.     bra    L218
  1131. ;         
  1132. L173
  1133. ;>Accum, attr->dat
  1134.     pea    $10.w
  1135.     move.l    a4,a1
  1136.     move.l    4(a1),-(a7)
  1137.     pea    $21B4(a2)
  1138.     jsr    _q_memcpy
  1139.     add.w    #$C,a7
  1140. ;            
  1141.     bra    L219
  1142. L174
  1143. ;        oldDrawBuffer = ctx->Color.DrawBuffer;
  1144.     move.l    $21E2(a2),d2
  1145. ;            sizeof(struct gl_co
  1146.     pea    $52.w
  1147.     move.l    a4,a1
  1148.     move.l    4(a1),-(a7)
  1149.     pea    $21C4(a2)
  1150.     jsr    _q_memcpy
  1151.     add.w    #$C,a7
  1152. ;        if (ctx->Color.DrawBuffer != oldDrawBuffer) 
  1153.     move.l    $21E2(a2),d0
  1154.     cmp.l    d2,d0
  1155.     beq.b    L176
  1156. L175
  1157. ;           gl_DrawBuffer(ctx, ctx->Color.DrawBuffer);
  1158.     move.l    $21E2(a2),-(a7)
  1159.     move.l    a2,-(a7)
  1160.     jsr    _gl_DrawBuffer
  1161.     addq.w    #$8,a7
  1162. L176
  1163. ;            
  1164.     bra    L219
  1165. L177
  1166. ;            sizeof(struct gl_curren
  1167.     pea    $86.w
  1168.     move.l    a4,a1
  1169.     move.l    4(a1),-(a7)
  1170.     pea    $2216(a2)
  1171.     jsr    _q_memcpy
  1172.     add.w    #$C,a7
  1173. ;            
  1174.     bra    L219
  1175. L178
  1176. ;            sizeof(struct gl_de
  1177.     pea    $A.w
  1178.     move.l    a4,a1
  1179.     move.l    4(a1),-(a7)
  1180.     pea    $229C(a2)
  1181.     jsr    _q_memcpy
  1182.     add.w    #$C,a7
  1183. ;            
  1184.     bra    L219
  1185. L179
  1186. ;            enable = (struct gl_enable_attrib *) attr->d
  1187.     move.l    a4,a1
  1188.     move.l    4(a1),a0
  1189. ;            ctx->Color.AlphaEnabled = enable->AlphaTest;
  1190.     move.b    (a0),$21E6(a2)
  1191. ;            ctx->Transform.Normalize = enable->AutoNorma
  1192.     move.l    a2,a1
  1193.     add.l    #$E53D,a1
  1194.     move.b    1(a0),(a1)
  1195. ;            ctx->Color.BlendEnabled = enable->Blend;
  1196.     move.b    2(a0),$21ED(a2)
  1197. ;        for (i=0;
  1198.     moveq    #0,d0
  1199.     bra.b    L181
  1200. L180
  1201. ;               ctx->Transform.ClipEnabled[i] = enable
  1202.     lea    3(a0),a1
  1203.     move.b    0(a1,d0.l),d1
  1204.     move.l    a2,a1
  1205.     add.l    #$E536,a1
  1206.     move.b    d1,0(a1,d0.l)
  1207.     addq.l    #1,d0
  1208. L181
  1209.     cmp.l    #6,d0
  1210.     blo.b    L180
  1211. L182
  1212. ;        ctx->Light.ColorMaterialEnabled = enable->ColorMaterial;
  1213.     move.l    a2,a1
  1214.     add.l    #$B130,a1
  1215.     move.b    $9(a0),(a1)
  1216. ;        ctx->Polygon.CullFlag = enable->CullFace;
  1217.     move.l    a2,a1
  1218.     add.l    #$DDFB,a1
  1219.     move.b    $A(a0),(a1)
  1220. ;        ctx->Depth.Test = enable->DepthTest;
  1221.     move.b    $B(a0),$22A4(a2)
  1222. ;        ctx->Color.DitherFlag = enable->Dither;
  1223.     move.b    $C(a0),$2215(a2)
  1224. ;        ctx->Fog.Enabled = enable->Fog;
  1225.     move.b    $D(a0),$22DE(a2)
  1226. ;        ctx->Light.Enabled = enable->Lighting;
  1227.     move.l    a2,a1
  1228.     add.l    #$B11E,a1
  1229.     move.b    $16(a0),(a1)
  1230. ;        ctx->Line.SmoothFlag = enable->LineSmooth;
  1231.     move.l    a2,a1
  1232.     add.l    #$B158,a1
  1233.     move.b    $17(a0),(a1)
  1234. ;        ctx->Line.StippleFlag = enable->LineStipple;
  1235.     move.l    a2,a1
  1236.     add.l    #$B159,a1
  1237.     move.b    $18(a0),(a1)
  1238. ;        ctx->Color.IndexLogicOpEnabled = enable->IndexLogicOp;
  1239.     move.b    $19(a0),$2212(a2)
  1240. ;        ctx->Color.ColorLogicOpEnabled = enable->ColorLogicOp;
  1241.     move.b    $1A(a0),$2213(a2)
  1242. ;        ctx->Eval.Map1Color4 = enable->Map1Color4;
  1243.     move.b    $1B(a0),$22A6(a2)
  1244. ;        ctx->Eval.Map1Index = enable->Map1Index;
  1245.     move.b    $1C(a0),$22A7(a2)
  1246. ;        ctx->Eval.Map1Normal = enable->Map1Normal;
  1247.     move.b    $1D(a0),$22A8(a2)
  1248. ;        ctx->Eval.Map1TextureCoord1 = enable->Map1TextureCoord1;
  1249.     move.b    $1E(a0),$22A9(a2)
  1250. ;        ctx->Eval.Map1TextureCoord2 = enable->Map1TextureCoord2;
  1251.     move.b    $1F(a0),$22AA(a2)
  1252. ;        ctx->Eval.Map1TextureCoord3 = enable->Map1TextureCoord3;
  1253.     move.b    $20(a0),$22AB(a2)
  1254. ;        ctx->Eval.Map1TextureCoord4 = enable->Map1TextureCoord4;
  1255.     move.b    $21(a0),$22AC(a2)
  1256. ;        ctx->Eval.Map1Vertex3 = enable->Map1Vertex3;
  1257.     move.b    $22(a0),$22AD(a2)
  1258. ;        ctx->Eval.Map1Vertex4 = enable->Map1Vertex4;
  1259.     move.b    $23(a0),$22AE(a2)
  1260. ;        ctx->Eval.Map2Color4 = enable->Map2Color4;
  1261.     move.b    $24(a0),$22AF(a2)
  1262. ;        ctx->Eval.Map2Index = enable->Map2Index;
  1263.     move.b    $25(a0),$22B0(a2)
  1264. ;        ctx->Eval.Map2Normal = enable->Map2Normal;
  1265.     move.b    $26(a0),$22B1(a2)
  1266. ;        ctx->Eval.Map2TextureCoord1 = enable->Map2TextureCoord1;
  1267.     move.b    $27(a0),$22B2(a2)
  1268. ;        ctx->Eval.Map2TextureCoord2 = enable->Map2TextureCoord2;
  1269.     move.b    $28(a0),$22B3(a2)
  1270. ;        ctx->Eval.Map2TextureCoord3 = enable->Map2TextureCoord3;
  1271.     move.b    $29(a0),$22B4(a2)
  1272. ;        ctx->Eval.Map2TextureCoord4 = enable->Map2TextureCoord4;
  1273.     move.b    $2A(a0),$22B5(a2)
  1274. ;        ctx->Eval.Map2Vertex3 = enable->Map2Vertex3;
  1275.     move.b    $2B(a0),$22B6(a2)
  1276. ;        ctx->Eval.Map2Vertex4 = enable->Map2Vertex4;
  1277.     move.b    $2C(a0),$22B7(a2)
  1278. ;        ctx->Transform.Normalize = enable->Normalize;
  1279.     move.l    a2,a1
  1280.     add.l    #$E53D,a1
  1281.     move.b    $2D(a0),(a1)
  1282. ;        ctx->Transform.RescaleNormals = enable->RescaleNormals;
  1283.     move.l    a2,a1
  1284.     add.l    #$E53E,a1
  1285.     move.b    $34(a0),(a1)
  1286. ;        ctx->Point.SmoothFlag = enable->PointSmooth;
  1287.     move.l    a2,a1
  1288.     add.l    #$DDD0,a1
  1289.     move.b    $2E(a0),(a1)
  1290. ;        ctx->Polygon.OffsetPoint = enable->PolygonOffsetPoint;
  1291.     move.l    a2,a1
  1292.     add.l    #$DE0E,a1
  1293.     move.b    $2F(a0),(a1)
  1294. ;        ctx->Polygon.OffsetLine = enable->PolygonOffsetLine;
  1295.     move.l    a2,a1
  1296.     add.l    #$DE0F,a1
  1297.     move.b    $30(a0),(a1)
  1298. ;        ctx->Polygon.OffsetFill = enable->PolygonOffsetFill;
  1299.     move.l    a2,a1
  1300.     add.l    #$DE10,a1
  1301.     move.b    $31(a0),(a1)
  1302. ;            ctx->Polygon.OffsetAny = ctx->Polygon.Offset
  1303.     moveq    #1,d0
  1304.     move.l    a2,a1
  1305.     add.l    #$DDEE,a1
  1306.     tst.b    $20(a1)
  1307.     bne.b    L186
  1308. L183
  1309.     move.l    a2,a1
  1310.     add.l    #$DDEE,a1
  1311.     tst.b    $21(a1)
  1312.     bne.b    L186
  1313. L184
  1314.     move.l    a2,a1
  1315.     add.l    #$DDEE,a1
  1316.     tst.b    $22(a1)
  1317.     bne.b    L186
  1318. L185
  1319.     moveq    #0,d0
  1320. L186
  1321.     move.l    a2,a1
  1322.     add.l    #$DE11,a1
  1323.     move.b    d0,(a1)
  1324. ;        ctx->Polygon.SmoothFlag = enable->PolygonSmooth;
  1325.     move.l    a2,a1
  1326.     add.l    #$DE04,a1
  1327.     move.b    $32(a0),(a1)
  1328. ;        ctx->Polygon.StippleFlag = enable->PolygonStipple;
  1329.     move.l    a2,a1
  1330.     add.l    #$DE05,a1
  1331.     move.b    $33(a0),(a1)
  1332. ;        ctx->Scissor.Enabled = enable->Scissor;
  1333.     move.l    a2,a1
  1334.     add.l    #$DE92,a1
  1335.     move.b    $35(a0),(a1)
  1336. ;        ctx->Stencil.Enabled = enable->Stencil;
  1337.     move.l    a2,a1
  1338.     add.l    #$DEA4,a1
  1339.     move.b    $36(a0),(a1)
  1340. ;            ctx->Texture.Enabled = enable->Texture;
  1341.     move.l    a2,a1
  1342.     add.l    #$DEC2,a1
  1343.     move.l    $38(a0),(a1)
  1344. ;            for (i=0;
  1345.     moveq    #0,d0
  1346.     bra.b    L188
  1347. L187
  1348. ;               ctx->Texture.Set[i].TexGenEnabled = en
  1349.     lea    $3C(a0),a1
  1350.     move.l    0(a1,d0.l*4),d1
  1351.     move.l    a2,a1
  1352.     add.l    #$DEC6,a1
  1353.     move.l    d0,d2
  1354.     muls.l    #$BC,d2
  1355.     move.l    d1,$14(a1,d2.l)
  1356.     addq.l    #1,d0
  1357. L188
  1358.     cmp.l    #2,d0
  1359.     blo.b    L187
  1360. L189
  1361. ;            
  1362.     bra    L219
  1363. L190
  1364. ;x->Eval, attr->da
  1365.     pea    $38.w
  1366.     move.l    a4,a1
  1367.     move.l    4(a1),-(a7)
  1368.     pea    $22A6(a2)
  1369.     jsr    _q_memcpy
  1370.     add.w    #$C,a7
  1371. ;            
  1372.     bra    L219
  1373. L191
  1374. ;ctx->Fog, attr->d
  1375.     pea    $26.w
  1376.     move.l    a4,a1
  1377.     move.l    4(a1),-(a7)
  1378.     pea    $22DE(a2)
  1379.     jsr    _q_memcpy
  1380.     add.w    #$C,a7
  1381. ;            
  1382.     bra    L219
  1383. L192
  1384. ;x->Hint, attr->da
  1385.     pea    $14.w
  1386.     move.l    a4,a1
  1387.     move.l    4(a1),-(a7)
  1388.     pea    $2304(a2)
  1389.     jsr    _q_memcpy
  1390.     add.w    #$C,a7
  1391. ;            
  1392.     bra    L219
  1393. L193
  1394. ;>Light, attr->dat
  1395.     move.l    #$8E40,-(a7)
  1396.     move.l    a4,a1
  1397.     move.l    4(a1),-(a7)
  1398.     pea    $2318(a2)
  1399.     jsr    _q_memcpy
  1400.     add.w    #$C,a7
  1401. ;            
  1402.     bra    L219
  1403. L194
  1404. ;x->Line, attr->da
  1405.     pea    $C.w
  1406.     move.l    a4,a1
  1407.     move.l    4(a1),-(a7)
  1408.     move.l    a2,a0
  1409.     add.l    #$B158,a0
  1410.     pea    (a0)
  1411.     jsr    _q_memcpy
  1412.     add.w    #$C,a7
  1413. ;            
  1414.     bra    L219
  1415. L195
  1416. ;x->List, attr->da
  1417.     pea    4.w
  1418.     move.l    a4,a1
  1419.     move.l    4(a1),-(a7)
  1420.     move.l    a2,a0
  1421.     add.l    #$B164,a0
  1422.     pea    (a0)
  1423.     jsr    _q_memcpy
  1424.     add.w    #$C,a7
  1425. ;            
  1426.     bra    L219
  1427. L196
  1428. ;>Pixel, attr->dat
  1429.     pea    $2C68.w
  1430.     move.l    a4,a1
  1431.     move.l    4(a1),-(a7)
  1432.     move.l    a2,a0
  1433.     add.l    #$B168,a0
  1434.     pea    (a0)
  1435.     jsr    _q_memcpy
  1436.     add.w    #$C,a7
  1437. ;            
  1438.     bra    L219
  1439. L197
  1440. ;>Point, attr->dat
  1441.     pea    $1E.w
  1442.     move.l    a4,a1
  1443.     move.l    4(a1),-(a7)
  1444.     move.l    a2,a0
  1445.     add.l    #$DDD0,a0
  1446.     pea    (a0)
  1447.     jsr    _q_memcpy
  1448.     add.w    #$C,a7
  1449. ;            
  1450.     bra    L219
  1451. L198
  1452. ;            sizeof(struct gl_polygo
  1453.     pea    $24.w
  1454.     move.l    a4,a1
  1455.     move.l    4(a1),-(a7)
  1456.     move.l    a2,a0
  1457.     add.l    #$DDEE,a0
  1458.     pea    (a0)
  1459.     jsr    _q_memcpy
  1460.     add.w    #$C,a7
  1461. ;            
  1462.     bra    L219
  1463. L199
  1464. ;ctx->PolygonStipp
  1465.     pea    $80.w
  1466.     move.l    a4,a1
  1467.     move.l    4(a1),-(a7)
  1468.     move.l    a2,a0
  1469.     add.l    #$DE12,a0
  1470.     pea    (a0)
  1471.     jsr    _q_memcpy
  1472.     add.w    #$C,a7
  1473. ;        
  1474.     bra    L219
  1475. L200
  1476. ;            sizeof(struct gl_scisso
  1477.     pea    $12.w
  1478.     move.l    a4,a1
  1479.     move.l    4(a1),-(a7)
  1480.     move.l    a2,a0
  1481.     add.l    #$DE92,a0
  1482.     pea    (a0)
  1483.     jsr    _q_memcpy
  1484.     add.w    #$C,a7
  1485. ;            
  1486.     bra    L219
  1487. L201
  1488. ;            sizeof(struct gl_stenci
  1489.     pea    $16.w
  1490.     move.l    a4,a1
  1491.     move.l    4(a1),-(a7)
  1492.     move.l    a2,a0
  1493.     add.l    #$DEA4,a0
  1494.     pea    (a0)
  1495.     jsr    _q_memcpy
  1496.     add.w    #$C,a7
  1497. ;            
  1498.     bra    L219
  1499. L202
  1500. ;            sizeof(struct gl_tran
  1501.     pea    $6E.w
  1502.     move.l    a4,a1
  1503.     move.l    4(a1),-(a7)
  1504.     move.l    a2,a0
  1505.     add.l    #$E4D2,a0
  1506.     pea    (a0)
  1507.     jsr    _q_memcpy
  1508.     add.w    #$C,a7
  1509. ;            
  1510.     bra    L219
  1511. L203
  1512. ;            sizeof(struct gl_textur
  1513.     pea    $618.w
  1514.     move.l    a4,a1
  1515.     move.l    4(a1),-(a7)
  1516.     move.l    a2,a0
  1517.     add.l    #$DEBA,a0
  1518.     pea    (a0)
  1519.     jsr    _q_memcpy
  1520.     add.w    #$C,a7
  1521. ;               int texSet = ctx->Texture.CurrentSet;
  1522.     move.l    a2,a0
  1523.     add.l    #$DEBA,a0
  1524.     move.l    (a0),d1
  1525. ;               for (dim = 0;
  1526.     moveq    #0,d0
  1527.     bra    L211
  1528. L204
  1529. ;                  if (dim == 0)
  1530.     tst.l    d0
  1531.     bne.b    L206
  1532. L205
  1533. ;                     obj = ctx->Texture.Set[tex
  1534.     move.l    a2,a0
  1535.     add.l    #$DEC6,a0
  1536.     move.l    d1,d2
  1537.     muls.l    #$BC,d2
  1538.     add.l    d2,a0
  1539.     move.l    $A8(a0),a3
  1540.     bra.b    L210
  1541. L206
  1542. ;                  else if (dim == 1)
  1543.     cmp.l    #1,d0
  1544.     bne.b    L208
  1545. L207
  1546. ;                     obj = ctx->Texture.Set[tex
  1547.     move.l    a2,a0
  1548.     add.l    #$DEC6,a0
  1549.     move.l    d1,d2
  1550.     muls.l    #$BC,d2
  1551.     add.l    d2,a0
  1552.     move.l    $AC(a0),a3
  1553.     bra.b    L210
  1554. L208
  1555. ;                  else if (dim == 2)
  1556.     cmp.l    #2,d0
  1557.     bne.b    L210
  1558. L209
  1559. ;                     obj = ctx->Texture.Set[tex
  1560.     move.l    a2,a0
  1561.     add.l    #$DEC6,a0
  1562.     move.l    d1,d2
  1563.     muls.l    #$BC,d2
  1564.     add.l    d2,a0
  1565.     move.l    $B0(a0),a3
  1566. L210
  1567. ;                  obj->Priority = ctx->Texture.Pri
  1568.     move.l    a2,a0
  1569.     add.l    #$E45A,a0
  1570.     fmove.s    0(a0,d0.l*4),fp0
  1571.     move.l    a3,a0
  1572.     fmove.s    fp0,$C(a0)
  1573. ;                  obj->BorderColor[0] = ctx->Textu
  1574.     move.l    a2,a0
  1575.     add.l    #$E466,a0
  1576.     move.l    d0,d2
  1577.     asl.l    #4,d2
  1578.     move.l    0(a0,d2.l),d2
  1579.     move.l    d2,$10(a3)
  1580. ;                  obj->BorderColor[1] = ctx->Textu
  1581.     move.l    a2,a0
  1582.     add.l    #$E466,a0
  1583.     move.l    d0,d2
  1584.     asl.l    #4,d2
  1585.     lea    0(a0,d2.l),a0
  1586.     move.l    4(a0),d2
  1587.     lea    $10(a3),a0
  1588.     move.l    d2,4(a0)
  1589. ;                  obj->BorderColor[2] = ctx->Textu
  1590.     move.l    a2,a0
  1591.     add.l    #$E466,a0
  1592.     move.l    d0,d2
  1593.     asl.l    #4,d2
  1594.     lea    0(a0,d2.l),a0
  1595.     move.l    $8(a0),d2
  1596.     lea    $10(a3),a0
  1597.     move.l    d2,$8(a0)
  1598. ;                  obj->BorderColor[3] = ctx->Textu
  1599.     move.l    a2,a0
  1600.     add.l    #$E466,a0
  1601.     move.l    d0,d2
  1602.     asl.l    #4,d2
  1603.     lea    0(a0,d2.l),a0
  1604.     move.l    $C(a0),d2
  1605.     lea    $10(a3),a0
  1606.     move.l    d2,$C(a0)
  1607. ;                  obj->WrapS = ctx->Texture.WrapS[
  1608.     move.l    a2,a0
  1609.     add.l    #$E496,a0
  1610.     move.l    0(a0,d0.l*4),d2
  1611.     move.l    a3,a0
  1612.     move.l    d2,$20(a0)
  1613. ;                  obj->WrapT = ctx->Texture.WrapT[
  1614.     move.l    a2,a0
  1615.     add.l    #$E4A2,a0
  1616.     move.l    0(a0,d0.l*4),d2
  1617.     move.l    a3,a0
  1618.     move.l    d2,$24(a0)
  1619. ;                  obj->WrapR = ctx->Texture.WrapR[
  1620.     move.l    a2,a0
  1621.     add.l    #$E4AE,a0
  1622.     move.l    0(a0,d0.l*4),d2
  1623.     move.l    a3,a0
  1624.     move.l    d2,$28(a0)
  1625. ;                  obj->MinFilter = ctx->Texture.Mi
  1626.     move.l    a2,a0
  1627.     add.l    #$E4BA,a0
  1628.     move.l    0(a0,d0.l*4),d2
  1629.     move.l    a3,a0
  1630.     move.l    d2,$2C(a0)
  1631. ;                  obj->MagFilter = ctx->Texture.Ma
  1632.     move.l    a2,a0
  1633.     add.l    #$E4C6,a0
  1634.     move.l    0(a0,d0.l*4),d2
  1635.     move.l    a3,a0
  1636.     move.l    d2,$30(a0)
  1637.     addq.l    #1,d0
  1638. L211
  1639.     cmp.l    #3,d0
  1640.     blt    L204
  1641. L212
  1642. ;            
  1643.     bra    L219
  1644. L213
  1645. ;            sizeof(struct gl_viewp
  1646.     pea    $30.w
  1647.     move.l    a4,a1
  1648.     move.l    4(a1),-(a7)
  1649.     move.l    a2,a0
  1650.     add.l    #$E540,a0
  1651.     pea    (a0)
  1652.     jsr    _q_memcpy
  1653.     add.w    #$C,a7
  1654. ;            if (ctx->Driver.Viewport) 
  1655.     tst.l    $9E4(a2)
  1656.     beq.b    L215
  1657. L214
  1658. ;               (*ctx->Driver.Viewport)( ctx, ctx->Vie
  1659.     move.l    a2,a0
  1660.     add.l    #$E540,a0
  1661.     move.l    $C(a0),-(a7)
  1662.     move.l    a2,a0
  1663.     add.l    #$E540,a0
  1664.     move.l    $8(a0),-(a7)
  1665.     move.l    a2,a0
  1666.     add.l    #$E540,a0
  1667.     move.l    4(a0),-(a7)
  1668.     move.l    a2,a0
  1669.     add.l    #$E540,a0
  1670.     move.l    (a0),-(a7)
  1671.     move.l    a2,-(a7)
  1672.     move.l    $9E4(a2),a0
  1673.     jsr    (a0)
  1674.     add.w    #$14,a7
  1675. L215
  1676. ;            if (ctx->Driver.DepthRange) 
  1677.     tst.l    $9E8(a2)
  1678.     beq.b    L217
  1679. L216
  1680. ;               (*ctx->Driver.DepthRange)( ctx, ctx->V
  1681.     move.l    a2,a0
  1682.     add.l    #$E540,a0
  1683.     fmove.s    $14(a0),fp0
  1684.     fmove.d    fp0,-(a7)
  1685.     move.l    a2,a0
  1686.     add.l    #$E540,a0
  1687.     fmove.s    $10(a0),fp0
  1688.     fmove.d    fp0,-(a7)
  1689.     move.l    a2,-(a7)
  1690.     move.l    $9E8(a2),a0
  1691.     jsr    (a0)
  1692.     add.w    #$14,a7
  1693. L217
  1694. ;            
  1695.     bra.b    L219
  1696. L218
  1697. ;            gl_problem( ctx, "Bad attrib flag in PopAttr
  1698.     move.l    #L166,-(a7)
  1699.     move.l    a2,-(a7)
  1700.     jsr    _gl_problem
  1701.     addq.w    #$8,a7
  1702. ;            
  1703. L219
  1704. ;      next = attr->next;
  1705.     move.l    a4,a0
  1706.     move.l    $8(a0),-$8(a5)
  1707. ;      free( (void *) attr->data );
  1708.     move.l    a4,a1
  1709.     move.l    4(a1),-(a7)
  1710.     jsr    _free
  1711.     addq.w    #4,a7
  1712. ;      free( (void *) attr );
  1713.     move.l    a4,-(a7)
  1714.     jsr    _free
  1715.     addq.w    #4,a7
  1716. ;      attr = next;
  1717.     move.l    -$8(a5),a4
  1718. L220
  1719.     cmp.w    #0,a4
  1720.     bne    L172
  1721. L221
  1722. ;   ctx->NewState = NEW_ALL;
  1723.     move.l    a2,a0
  1724.     add.l    #$E960,a0
  1725.     move.l    #$FF,(a0)
  1726.     movem.l    (a7)+,d2/d3/a2-a4
  1727.     unlk    a5
  1728.     rts
  1729.  
  1730. L166
  1731.     dc.b    'Bad attrib flag in PopAttrib',0
  1732. L165
  1733.     dc.b    'glPopAttrib',0
  1734.  
  1735.     SECTION "_gl_PushClientAttrib:0",CODE
  1736.  
  1737.  
  1738. ;void gl_PushClientAttrib( GLcontext *ctx, GLbitfield mask )
  1739.     XDEF    _gl_PushClientAttrib
  1740. _gl_PushClientAttrib
  1741.     movem.l    d2/a2-a4,-(a7)
  1742.     move.l    $18(a7),d2
  1743.     move.l    $14(a7),a2
  1744. L231
  1745. ;   if (INSIDE_BEGIN_END(ctx)) 
  1746.     move.l    a2,a0
  1747.     add.l    #$E968,a0
  1748.     move.l    (a0),d0
  1749.     cmp.l    #$1A00,d0
  1750.     beq.b    L233
  1751. L232
  1752. ;      gl_error( ctx, GL_INVALID_OPERATION, "glPushClientAttrib
  1753.     move.l    #L230,-(a7)
  1754.     pea    $502.w
  1755.     move.l    a2,-(a7)
  1756.     jsr    _gl_error
  1757.     add.w    #$C,a7
  1758.     movem.l    (a7)+,d2/a2-a4
  1759.     rts
  1760. L233
  1761. ;   if (ctx->ClientAttribStackDepth>=MAX_CLIENT_ATTRIB_STACK_DEPTH)
  1762.     move.l    a2,a0
  1763.     add.l    #$E574,a0
  1764.     move.l    (a0),d0
  1765.     cmp.l    #$10,d0
  1766.     blo.b    L235
  1767. L234
  1768. ;      gl_error( ctx, GL_STACK_OVERFLOW, "glPushClientAttrib" );
  1769.     move.l    #L230,-(a7)
  1770.     pea    $503.w
  1771.     move.l    a2,-(a7)
  1772.     jsr    _gl_error
  1773.     add.w    #$C,a7
  1774.     movem.l    (a7)+,d2/a2-a4
  1775.     rts
  1776. L235
  1777. ;   head = NULL;
  1778.     sub.l    a3,a3
  1779. ;   if (mask & GL_CLIENT_PIXEL_STORE_BIT) 
  1780.     move.l    d2,d0
  1781.     and.l    #1,d0
  1782.     beq    L237
  1783. L236
  1784. ;      attr = MALLOC_STRUCT( gl_pixelstore_attrib );
  1785.     pea    $1A.w
  1786.     jsr    _malloc
  1787.     addq.w    #4,a7
  1788.     move.l    d0,a4
  1789. ;r, &ctx->Pack, si
  1790.     pea    $1A.w
  1791.     move.l    a2,a0
  1792.     add.l    #$E644,a0
  1793.     pea    (a0)
  1794.     move.l    a4,-(a7)
  1795.     jsr    _q_memcpy
  1796.     add.w    #$C,a7
  1797. ;      newnode = new_attrib_node( GL_CLIENT_PACK_BIT );
  1798.     move.l    #$100000,-(a7)
  1799.     jsr    _new_attrib_node
  1800.     addq.w    #4,a7
  1801.     move.l    d0,a0
  1802. ;      newnode->data = attr;
  1803.     move.l    a4,4(a0)
  1804. ;      newnode->next = head;
  1805.     move.l    a3,$8(a0)
  1806. ;      head = newnode;
  1807.     move.l    a0,a3
  1808. ;      attr = MALLOC_STRUCT( gl_pixelstore_attrib );
  1809.     pea    $1A.w
  1810.     jsr    _malloc
  1811.     addq.w    #4,a7
  1812.     move.l    d0,a4
  1813. ; &ctx->Unpack, si
  1814.     pea    $1A.w
  1815.     move.l    a2,a0
  1816.     add.l    #$E65E,a0
  1817.     pea    (a0)
  1818.     move.l    a4,-(a7)
  1819.     jsr    _q_memcpy
  1820.     add.w    #$C,a7
  1821. ;      newnode = new_attrib_node( GL_CLIENT_UNPACK_BIT );
  1822.     move.l    #$200000,-(a7)
  1823.     jsr    _new_attrib_node
  1824.     addq.w    #4,a7
  1825.     move.l    d0,a0
  1826. ;      newnode->data = attr;
  1827.     move.l    a4,4(a0)
  1828. ;      newnode->next = head;
  1829.     move.l    a3,$8(a0)
  1830. ;      head = newnode;
  1831.     move.l    a0,a3
  1832. L237
  1833. ;   if (mask & GL_CLIENT_VERTEX_ARRAY_BIT) 
  1834.     and.l    #2,d2
  1835.     beq.b    L239
  1836. L238
  1837. ;      attr = MALLOC_STRUCT( gl_array_attrib );
  1838.     pea    $8C.w
  1839.     jsr    _malloc
  1840.     addq.w    #4,a7
  1841.     move.l    d0,a4
  1842. ; attr, &ctx->Arra
  1843.     pea    $8C.w
  1844.     move.l    a2,a0
  1845.     add.l    #$E5B8,a0
  1846.     pea    (a0)
  1847.     move.l    a4,-(a7)
  1848.     jsr    _q_memcpy
  1849.     add.w    #$C,a7
  1850. ;      newnode = new_attrib_node( GL_CLIENT_VERTEX_ARRAY_BIT );
  1851.     pea    2.w
  1852.     jsr    _new_attrib_node
  1853.     addq.w    #4,a7
  1854.     move.l    d0,a0
  1855. ;      newnode->data = attr;
  1856.     move.l    a4,4(a0)
  1857. ;      newnode->next = head;
  1858.     move.l    a3,$8(a0)
  1859. ;      head = newnode;
  1860.     move.l    a0,a3
  1861. L239
  1862. ;   ctx->ClientAttribStack[ctx->ClientAttribStackDepth] = head;
  1863.     move.l    a2,a0
  1864.     add.l    #$E578,a0
  1865.     move.l    a2,a1
  1866.     add.l    #$E574,a1
  1867.     move.l    (a1),d0
  1868.     move.l    a3,0(a0,d0.l*4)
  1869. ;   ctx->ClientAttribStackDepth++;
  1870.     move.l    a2,a0
  1871.     add.l    #$E574,a0
  1872.     move.l    (a0),d0
  1873.     addq.l    #1,d0
  1874.     move.l    a2,a0
  1875.     add.l    #$E574,a0
  1876.     move.l    d0,(a0)
  1877.     movem.l    (a7)+,d2/a2-a4
  1878.     rts
  1879.  
  1880. L230
  1881.     dc.b    'glPushClientAttrib',0
  1882.  
  1883.     SECTION "_gl_PopClientAttrib:0",CODE
  1884.  
  1885.  
  1886. ;void gl_PopClientAttrib( GLcontext *ctx )
  1887.     XDEF    _gl_PopClientAttrib
  1888. _gl_PopClientAttrib
  1889.     movem.l    a2-a4,-(a7)
  1890.     move.l    $10(a7),a3
  1891. L242
  1892. ;   if (INSIDE_BEGIN_END(ctx)) 
  1893.     move.l    a3,a0
  1894.     add.l    #$E968,a0
  1895.     move.l    (a0),d0
  1896.     cmp.l    #$1A00,d0
  1897.     beq.b    L244
  1898. L243
  1899. ;      gl_error( ctx, GL_INVALID_OPERATION, "glPopClientAttrib"
  1900.     move.l    #L240,-(a7)
  1901.     pea    $502.w
  1902.     move.l    a3,-(a7)
  1903.     jsr    _gl_error
  1904.     add.w    #$C,a7
  1905.     movem.l    (a7)+,a2-a4
  1906.     rts
  1907. L244
  1908. ;   if (ctx->ClientAttribStackDepth==0) 
  1909.     move.l    a3,a0
  1910.     add.l    #$E574,a0
  1911.     tst.l    (a0)
  1912.     bne.b    L246
  1913. L245
  1914. ;      gl_error( ctx, GL_STACK_UNDERFLOW, "glPopClientAttrib" );
  1915.     move.l    #L240,-(a7)
  1916.     pea    $504.w
  1917.     move.l    a3,-(a7)
  1918.     jsr    _gl_error
  1919.     add.w    #$C,a7
  1920.     movem.l    (a7)+,a2-a4
  1921.     rts
  1922. L246
  1923. ;   ctx->ClientAttribStackDepth--;
  1924.     move.l    a3,a0
  1925.     add.l    #$E574,a0
  1926.     move.l    (a0),d0
  1927.     subq.l    #1,d0
  1928.     move.l    a3,a0
  1929.     add.l    #$E574,a0
  1930.     move.l    d0,(a0)
  1931. ;   attr = ctx->ClientAttribStack[ctx->ClientAttribStackDepth];
  1932.     move.l    a3,a0
  1933.     add.l    #$E578,a0
  1934.     move.l    a3,a1
  1935.     add.l    #$E574,a1
  1936.     move.l    (a1),d0
  1937.     move.l    0(a0,d0.l*4),a2
  1938. ;   while (attr) 
  1939.     bra    L253
  1940. L247
  1941. ;      switch (attr->kind)
  1942.     move.l    (a2),d0
  1943.     cmp.l    #$100000,d0
  1944.     beq.b    L248
  1945.     bhi.b    L255
  1946.     cmp.l    #2,d0
  1947.     beq.b    L250
  1948.     bra.b    L251
  1949. L255
  1950.     cmp.l    #$200000,d0
  1951.     beq.b    L249
  1952.     bra.b    L251
  1953. ;         
  1954. L248
  1955. ;               si
  1956.     pea    $1A.w
  1957.     move.l    4(a2),-(a7)
  1958.     move.l    a3,a0
  1959.     add.l    #$E644,a0
  1960.     pea    (a0)
  1961.     jsr    _q_memcpy
  1962.     add.w    #$C,a7
  1963. ;            
  1964.     bra.b    L252
  1965. L249
  1966. ;               si
  1967.     pea    $1A.w
  1968.     move.l    4(a2),-(a7)
  1969.     move.l    a3,a0
  1970.     add.l    #$E65E,a0
  1971.     pea    (a0)
  1972.     jsr    _q_memcpy
  1973.     add.w    #$C,a7
  1974. ;            
  1975.     bra.b    L252
  1976. L250
  1977. ;            sizeof(struct gl_array_at
  1978.     pea    $8C.w
  1979.     move.l    4(a2),-(a7)
  1980.     move.l    a3,a0
  1981.     add.l    #$E5B8,a0
  1982.     pea    (a0)
  1983.     jsr    _q_memcpy
  1984.     add.w    #$C,a7
  1985. ;            
  1986.     bra.b    L252
  1987. L251
  1988. ;            gl_problem( ctx, "Bad attrib flag in PopClie
  1989.     move.l    #L241,-(a7)
  1990.     move.l    a3,-(a7)
  1991.     jsr    _gl_problem
  1992.     addq.w    #$8,a7
  1993. ;            
  1994. L252
  1995. ;      next = attr->next;
  1996.     move.l    $8(a2),a4
  1997. ;      free( (void *) attr->data );
  1998.     move.l    4(a2),-(a7)
  1999.     jsr    _free
  2000.     addq.w    #4,a7
  2001. ;      free( (void *) attr );
  2002.     move.l    a2,-(a7)
  2003.     jsr    _free
  2004.     addq.w    #4,a7
  2005. ;      attr = next;
  2006.     move.l    a4,a2
  2007. L253
  2008.     cmp.w    #0,a2
  2009.     bne    L247
  2010. L254
  2011. ;   ctx->NewState = NEW_ALL;
  2012.     move.l    a3,a0
  2013.     add.l    #$E960,a0
  2014.     move.l    #$FF,(a0)
  2015.     movem.l    (a7)+,a2-a4
  2016.     rts
  2017.  
  2018. L241
  2019.     dc.b    'Bad attrib flag in PopClientAttrib',0
  2020. L240
  2021.     dc.b    'glPopClientAttrib',0
  2022.  
  2023.     END
  2024.